Java Bean Validation অ্যানোটেশন যেমন @NotNull, @Size, এবং অন্যান্য হ্যান্ডল করতে Jackson এবং Bean Validation API (যেমন Hibernate Validator) একত্রে কাজ করে। এগুলো সাধারণত ডেটা ভ্যালিডেশন নিশ্চিত করার জন্য ব্যবহৃত হয়।
Java Bean Validation এর প্রধান উদ্দেশ্য
@NotNull: কোনো ফিল্ড null হতে পারবে না।@Size: কোনো ফিল্ডের দৈর্ঘ্য বা সাইজ নির্দিষ্ট সীমার মধ্যে থাকতে হবে।@Min,@Max: একটি ফিল্ডের সর্বনিম্ন এবং সর্বোচ্চ মান নির্ধারণ।@Pattern: একটি ফিল্ড নির্দিষ্ট প্যাটার্ন অনুসরণ করছে কি না তা যাচাই।
Jackson এর মাধ্যমে Validation Integration
প্রয়োজনীয় ডিপেনডেন্সি
Maven Dependency:
<dependency>
<groupId>javax.validation</groupId>
<artifactId>validation-api</artifactId>
<version>2.0.1.Final</version>
</dependency>
<dependency>
<groupId>org.hibernate</groupId>
<artifactId>hibernate-validator</artifactId>
<version>6.2.4.Final</version>
</dependency>
Step-by-Step উদাহরণ
১. মডেল ক্লাসে Validation Annotation যোগ করা
import javax.validation.constraints.NotNull;
import javax.validation.constraints.Size;
public class User {
@NotNull(message = "Name cannot be null")
private String name;
@Size(min = 1, max = 50, message = "Name length must be between 1 and 50 characters")
private String username;
@NotNull(message = "Email cannot be null")
private String email;
// Getters and Setters
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getUsername() {
return username;
}
public void setUsername(String username) {
this.username = username;
}
public String getEmail() {
return email;
}
public void setEmail(String email) {
this.email = email;
}
}
২. Validation চেক করার জন্য Validator ব্যবহার করা
import javax.validation.Validation;
import javax.validation.Validator;
import javax.validation.ValidatorFactory;
import javax.validation.ConstraintViolation;
import java.util.Set;
public class ValidationExample {
public static void main(String[] args) {
// Validator তৈরি
ValidatorFactory factory = Validation.buildDefaultValidatorFactory();
Validator validator = factory.getValidator();
// মডেল অবজেক্ট তৈরি
User user = new User();
user.setName(null); // Invalid
user.setUsername(""); // Invalid
user.setEmail(null); // Invalid
// Validation চেক
Set<ConstraintViolation<User>> violations = validator.validate(user);
// Validation ত্রুটি প্রদর্শন
for (ConstraintViolation<User> violation : violations) {
System.out.println(violation.getPropertyPath() + ": " + violation.getMessage());
}
}
}
Output:
name: Name cannot be null
username: Name length must be between 1 and 50 characters
email: Email cannot be null
৩. Spring Boot এর সাথে Validation ব্যবহার করা
Spring Boot এর ক্ষেত্রে Validation সহজে REST API তে ব্যবহার করা যায়।
Spring Boot মডেল ক্লাস:
import javax.validation.constraints.NotNull;
import javax.validation.constraints.Size;
public class User {
@NotNull(message = "Name cannot be null")
private String name;
@Size(min = 1, max = 50, message = "Username length must be between 1 and 50 characters")
private String username;
@NotNull(message = "Email cannot be null")
private String email;
// Getters and Setters
}
Spring REST Controller:
import org.springframework.http.HttpStatus;
import org.springframework.http.ResponseEntity;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*;
import javax.validation.Valid;
@RestController
@RequestMapping("/api/users")
public class UserController {
@PostMapping
public ResponseEntity<String> createUser(@Valid @RequestBody User user) {
return new ResponseEntity<>("User is valid!", HttpStatus.OK);
}
}
API Call উদাহরণ:
Request:
{
"name": null,
"username": "",
"email": null
}
Response:
{
"timestamp": "2024-12-21T10:30:00.000+00:00",
"status": 400,
"errors": [
"Name cannot be null",
"Username length must be between 1 and 50 characters",
"Email cannot be null"
]
}
৪. Validation Error হ্যান্ডল করা
Spring Boot এ কাস্টম Error Response তৈরি করতে একটি ExceptionHandler ব্যবহার করা হয়।
Custom Exception Handler:
import org.springframework.http.HttpStatus;
import org.springframework.http.ResponseEntity;
import org.springframework.validation.FieldError;
import org.springframework.web.bind.MethodArgumentNotValidException;
import org.springframework.web.bind.annotation.ExceptionHandler;
import org.springframework.web.bind.annotation.RestControllerAdvice;
import java.util.HashMap;
import java.util.Map;
@RestControllerAdvice
public class ValidationExceptionHandler {
@ExceptionHandler(MethodArgumentNotValidException.class)
public ResponseEntity<Map<String, String>> handleValidationExceptions(MethodArgumentNotValidException ex) {
Map<String, String> errors = new HashMap<>();
for (FieldError error : ex.getBindingResult().getFieldErrors()) {
errors.put(error.getField(), error.getDefaultMessage());
}
return new ResponseEntity<>(errors, HttpStatus.BAD_REQUEST);
}
}
Response:
{
"name": "Name cannot be null",
"username": "Username length must be between 1 and 50 characters",
"email": "Email cannot be null"
}
@NotNullএবং@Sizeএর মতো Validation অ্যানোটেশন ব্যবহার করে ডেটার মান যাচাই করা সহজ হয়।- Jackson এবং Bean Validation এর ইন্টিগ্রেশন JSON ডেটা ভ্যালিডেশন নিশ্চিত করে।
- Spring Boot এ
@Validএবং Exception Handler ব্যবহার করে REST API তে Validation সহজে প্রয়োগ করা যায়।
Content added By
Read more